package appvideo.logica;
import appvideo.persistencia.PersistenciaPromocion;
import appvideo.ObtenerTeclado;
import java.sql.SQLException;
import java.util.*;

//clase Padre de la cual heredan las promociones del videoclub

public abstract class Promociones {
    
    // Atributos de la clase    
    private int id; //ID del registro
    private String nombre; //Nombre de la promoción
    private Date fechaInicio; //Fecha de inicio de la promoción
    private Date fechaFinal; //Fecha final de la promoción
    private boolean activa; //True Promoción activa, False Promoción inactiva
    private String tipo; //Tipo de promoción
    
    // Constructor
    public Promociones(String nombre, Date fechaInicio, Date fechaFinal, boolean activa, String tipo){
        this.nombre=nombre;
        this.fechaInicio=fechaInicio;
        this.fechaFinal=fechaFinal;
        this.activa = activa;
        this.tipo = tipo;
    }

    public Promociones(int id, String nombre, Date fechaInicio, Date fechaFinal, boolean activa, String tipo) {
        this.id = id;
        this.nombre = nombre;
        this.fechaInicio = fechaInicio;
        this.fechaFinal = fechaFinal;
        this.activa = activa;
        this.tipo = tipo;
    }
    
    public Promociones(){        
    }
           
    public boolean isActiva() {
        return activa;
    }

    public void setActiva(boolean activa) {
        this.activa = activa;
    }

    public Date getFechaFinal() {
        return fechaFinal;
    }

    public void setFechaFinal(Date fechaFinal) {
        this.fechaFinal = fechaFinal;
    }

    public Date getFechaInicio() {
        return fechaInicio;
    }

    public void setFechaInicio(Date fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }
          
    public double damePrecio(List<ProductoAlquilado> pA, Socio s){
        double ret = 0.0;
        //Metodo que uso para que las hijas lo sobrecargen
        return ret;
    }    
    public abstract void insertaPromocion() throws SQLException;    
    public abstract void visualizaPromocion() throws SQLException;    
    public abstract List<Promociones> visualizarPromociones(String filtro);
    public abstract void modificaPromocion() throws SQLException;
    public abstract List<Promociones> visualizarPromocionesActivas(); 
//    public static List<Promociones> visualizarPromocionesActivasTodas(){
//        return PersistenciaPromocion.getPromocionesActivasTodas();
//    }
    public static void visualizarPromocionesActivasTodas(){
        List<Promociones> prom = PersistenciaPromocion.getPromocionesActivasTodas();

        //Muestra todas las promociones          
        System.out.println();        
        for(Promociones p: prom){
            System.out.println(p);              
        }                           
        String resp = " " + ObtenerTeclado.dameTecla("");
    };
       
    @Override
    public String toString() {
        return "Promociones{" + "id=" + id + ", nombre=" + nombre + ", fechaInicio=" + fechaInicio + ", fechaFinal=" + fechaFinal + ", activa=" + activa + '}';
    }
    
}
